package com.example.lt.controller;

import com.example.lt.context.BaseContext;
import com.example.lt.pojo.dto.CollectDTO;
import com.example.lt.pojo.vo.SongVO;
import com.example.lt.result.Result;
import com.example.lt.service.CollectService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author 小涛Tao
 * @Date: 2024/06/08/16:40
 * version 1.0 注释：
 **/
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/collect")
public class CollectController {

    private final CollectService collectService;

    /**
     * 管理端删除收藏歌曲记录，取消收藏
     * @param userId 用户id
     * @param songId 歌曲id
     * @return
     */
    @DeleteMapping("/admin/delete")
    public Result adminDeleteCollect(@RequestParam Integer userId, @RequestParam Integer songId) {
        log.info("管理端删除收藏歌曲记录：{}，{}",userId,songId);
        return collectService.deleteCollect(userId, songId);
    }

    /**
     * 管理端、客户端 获取用户收藏的歌曲信息
     * @param userId 用户id
     * @return
     */
    @GetMapping("/common/byUserId")
    public Result<List<SongVO>> getCollectSong(@RequestParam Integer userId) {
        log.info("管理端获取用户收藏的歌曲信息：{}",userId);
        List<SongVO> collectSong = collectService.getCollectSong(userId);
        return Result.success(collectSong);
    }

    /**
     * 添加收藏歌曲记录
     * @param collectDTO
     * @return
     */
    @PostMapping("/user/add")
    public Result addCollect(@RequestBody CollectDTO collectDTO) {
        collectDTO.setUserId(BaseContext.getCurrentId());
        log.info("添加收藏歌曲记录：{}",collectDTO);
        return collectService.addCollect(collectDTO);
    }

    /**
     * 客户端删除收藏歌曲记录，取消收藏
     * @param userId 用户id
     * @param songId 歌曲id
     * @return
     */
    @DeleteMapping("/user/delete")
    public Result deleteCollect(@RequestParam Integer userId, @RequestParam Integer songId) {
        userId = BaseContext.getCurrentId();
        log.info("删除收藏歌曲记录：{}，{}",userId,songId);
        return collectService.deleteCollect(userId, songId);
    }

    /**
     * 判断当前用户有没有收藏这首歌曲
     * @param collectDTO
     * @return
     */
    @PostMapping("/common/status")
    public Result status(@RequestBody CollectDTO collectDTO) {
        log.info("判断当前歌曲有没有被当前用户收藏：{}", collectDTO);
        return collectService.status(collectDTO);
    }

}
